查看原文
其他

阿里云原生资深专家李国强:云原生上云概述

阿里云用户组 凌云时刻 2022-05-30

凌云时刻

编者按:2021年7月2日,阿里云用户组(AUG)首次线下活动在济南召开。在容器、微服务等领域积淀了丰富经验的阿里云原生资深专家李国强,向数十家山东企业分享了云原生定义、云原生上云的多种方式及关键技术等。本文根据作者的现场演讲整理而成。

今天的分享主题是云原生上云概述,想和大家分享一下什么是云原生,怎么通过云原生方式上云,以及这种方式和原来的方式有什么区别。分享内容中会涉及到云原生的一些技术包含容器、微服务、Serverless等,希望能帮助大家更好地用云原生方式上云。

高速发展的云原生技术

云原生没有很长的历史,是近两年开始火爆的。最早是Pivotal公司提出的概念,不同企业对它有不同的解读。大多数企业认为云原生的概念是由CNCF云原生基金会做的定义。
首先,云原生技术有利于各组织在公有云、私有云和混合云形态下使用。云原生不等于公有云,它对于私有云和混合云是一样的,可以用在各种云的环境下。
但如果你自己买两台服务器,用一些云原生相关的技术其实是不能算云原生的,因为云原生强调的一个点就是可弹性。这也就是我说的第二点,云原生技术可以帮助用户构建和运行可弹性扩展的应用。对云计算了解得越多,越会发现,弹性是一个特别重要的概念。所有基础设施的弹性以及带来的上层的弹性,会是云带来的价值中最根本的起始。
第三,云原生的代表性技术:容器、服务网络、微服务、不可变基础设施和声明式API等。这些技术可以帮助用户去构建容错性好、易于管理、便于观测的松耦合应用,结合一些自动化的技术帮助用户快速地去发布这个业务。它的一个价值就是能帮助用户构建松耦合系统。在这个市场变化越来越快的场景下,业务变得越来越复杂,会让应用框架和基础设施也变得越来越复杂。所以松耦合的架构会成为大家现在应用架构或基础设施架构越来越喜欢的方式,分层解耦成不同层的问题选择不同的解决方案。
发布变更的速度以前可能一个业务是一个季度发一次,或者是一个月发一次,但是现在这种高速发展、竞争越来越激烈的情况下,企业会希望我们每星期都能发布,或者说出了线上问题当天就能发布。在这个发布的过程中,让稳定性更好,不会对业务产生影响,就是云原生技术想解决的几个问题。
很多报告也都在看这个趋势的发展,怎么评估云原生技术现在成熟度如何,现在去使用是不是一个合适的时机?这里有一些参考数据:Gartner预测到2022年的时候,75%的企业会使用云原生容器化的技术。
这个是对容器技术的一个初步判断,像Stack Overflow上面就是著名的程序员社交网站。容器已经成为了Linux之后最受欢迎的一个项目,以容器为代表的云原生技术其实在业界的成熟度已经比较高了,它的热度以及用户使用它运行生产环境的比例也越来越高。

广义云原生定义

 云原生技术不等于云原生

云原生技术不是云原生。想把云原生的技术发挥到极致,这是个系统化的问题。需要从软件、硬件和价格层面去全面地使用云原生方式。除了硬件上对云原生技术的支持、安全上的支持,还包括像数据库、大数据都在不断推出自己与云原生相关的一些东西。
云原生是一个更广义的概念,包含了刚才提到的这些云原生技术,也包含了像大数据、数据库、硬件、芯片等这些不断创新的领域。随着企业开始使用云原生技术,其实是云上整个技术栈在不断地做创新。

 云原生==因云而生

云原生对于企业来说可能是幸运的,也可能是不幸运的。它是这几年里最大的变革,带来了从基础设施层面往上各层面技术的变革。我们可能是最后一代需要做云原生上云这件事情的人。展望下未来的几年时间里,所有新的应用都会是长在云生在云上的,这些应用在设计之初就会充分考虑怎么用云。
之前很多存量的业务在设计构建之初,没有充分考虑到对云的适配性。所以我们就需要经历这样一个过程,去帮助所有的企业用云原生技术上云,最大化地赢得红利。在这之后的企业应用,云技术的发展与云的资源会像自来水一样,需要的时候就能够用到它,这个就叫按需所用。云的能力变得越来越标准,会让我们的业务能更好地符合云原生的架构。

云原生上云

 云原生上云的方式

什么是云原生上云,怎么去上云,业内对此的模式大致分为三类。请注意:这三类不是互斥的,每一类都是一种选择,企业可以根据自己的现状去选择不同的方式逐步去做。
第一类:Cloud-hosting。这种模式是最简单的一种平搬。如果不想对应用架构包括基础设施的运维使用习惯发生变化,可能会把当前原有的自建方式搬到云上来,用运维的方式进行管理,这是迁移成本最低的一种方式。
比如原来在虚机上、在Vmware上跑些业务,今天可能在云上去申请一些虚拟操作;或原来是跑一个数据库,现在把数据库放在云上部署,这个方式对大家的收益相对是比较少的。从财务的角度会觉得是从资产的模式转变成一种经营的方式。IT部门以前更多的定义为一个成本部门,所有的机器是一种资产。云的模式更多的是一种经营模式,经营的时候需要一些费用。所以对于企业收益相对会少一点。
第二类:Re-platform。这种可能应用侧发生的变化是较为复杂的。我们希望通过一些云原生技术,像容器等,能够让用户更大利用云的价值,包括基于容器的弹性伸缩这样的技术会让用户迁移成本和得到价值之间有个比较好的平衡,因为它对业务一侧几乎是无感的,个别情况下会对业务进行一个容器化的变化,基本层面主要是运维一侧发生变化。
第三类:Re-architect。对业务进行完全的重构,可以最大化地使用云的价值,但成本也是最高的,因为需要对整个业务的架构去进行重新构建。

 云原生上云最佳实践建议

第一种模式只要你想尝试云都可以去做Cloud-hosting,但云原生上云大多是后来的方式Re-platform和Re-architect。选择的时候和你的业务特性是非常相关的,取决于业务是处于稳态还是敏态。
稳态就是你的业务当前迭代速度并没有那么快,业务的需求变化没有那么多,它的用户流量的变化也不会突变,我们称这个业务为稳态业务。对稳态业务比较常见的一个方式可以用Re-platform做法。在这种模式下不需要有什么特别的变化,更多的是使用成熟技术的方案直接上云。代表性的可选技术包括容器化,以及容器化之后的弹性能力,会让用户的成本大大降低。
另外一个就是我们叫做BaaS,BaaS就是Backend-as-a-Service ,这样的方式去拿到一些中间的技术, 比如说自建的mysql、rocketmq、redis等,可以换成云厂商的数据库,中间件产品。这个过程能够降低客户的运维成本和使用成本。
和稳态相对的另一个是敏态业务。业务在不断的迭代过程中需求是非常旺盛的,可能每星期都会迭代,或者在一个月内就会期望流量的突增。这在互联网行业是很常见的,这时候会建议用Re-architect模式,在架构设计的时候就要考虑用更符合云的使用模式的架构去设计它。包括微服务的技术需要面向服务设计,但不是说Re-architect就一定要微服务。
通过消息队列对业务进行异步化,用Serverless方式把应用和基础设施的关注点进一步分离,是设计敏态业务时建议的一种方式。各企业可以对自己的业务做一个判断,用Re-platform尽量少变更的方式上云还是应该做一个较大的架构设计的方式上云。

云原生技术

 天然的搭档——容器化+微服务

选几个云原生技术和大家进行简单的分享。第一个就是容器化和微服务,这两个可以认为是一对天然的好搭档。往往企业在选择它的上云方式的时候,会把容器化和微服务同时考虑,因为要看下它的价值和代价。
容器包括容器编排在今天给我们带来的价值主要基于容器标准的交付,会让我们业务从开发到发布的过程更加标准化。还有资源利用率的提升,是许多企业选择容器的一个最主要原因。以前虚机的利用率往往比较难达到高的比例,而且用户会担心一台虚机上部署太多业务造成的相互影响。容器会让用户对利用率进行大的提高。
第三个是基于容器的编排,包括交付流程和运维模式会让整个企业在交付流程和运维的标准化实现进一步的提升。让丰富的K8S生态包括像安全、CICD等平台给用户带来较大的价值,这些是用户大多数去选择容器包括Kubernetes的时候期望的价值。
微服务价值主要在业务一侧,随着业务不断的发展,特别是敏态业务,当它发展到一定阶段的时候会变得很复杂,这时候微服务就能够很好地帮助用户去降低业务的复杂度。当对一个复杂的业务很难进行维护的时候,最好的办法就是拆解它,把它复杂度降低,这是微服务最核心的理念。在这之后带来的灵活性、弹性、更敏捷的开发是微服务的价值,之后业务的模块能够更方便的进行复用。所以容器更侧重于运维带来的价值,微服务更侧重应用带来的价值。
很多时候技术的选择是一个价值和成本的平衡,包括微服务和容器,它一定会带来一些代价。第一个比较大的代价就是微服务化后会让用户的架构变得复杂,相应的运维也会带来复杂性。就比如我原来有一个业务,就一个应用部署就够了,现在它被拆成二十多个服务,那它的运维成本、线上诊断成本肯定都会提高。
容器设定的理念就能够很好地解决微服务提到的复杂问题,所以这也是容器和微服务是一对天然好搭档的一个重要原因。但是容器也不是免费的,它会带来一些运维体系的变化。就是每次用一个新技术碰到一个问题,原来我有一个团队可能非常熟悉虚机或物理机的运维,但放到容器之后带来的一些新的技术、运维的方式会让整个团队的适应周期比较长,代价也较大。

 云原生技术之Serverless

另一个云原生技术就是Serverless。Serverless这个概念目前是很火很好的,未来十年也很看好Serverless。到底这个无服务器Serverless是什么,个人观念它是一个基础设施下沉,开发和运维的关注点分离的一个方向。Serverless这个概念是在2010年左右的时候提出的。
最有名的产品实现是AWS的Lambda,它把Serverless理念变成了一个产品。但随着技术的演进,Serverless不仅仅是函数计算,它已经涵盖到了各个层面的东西,其中最大的价值就是让我们的开发和运维完全进行分离,让开发人员更专注开发,所有基础设施相关的事情都交给云厂商或者运维团队来完成。
从这个层面来说可能是面向函数的Serverless,可以写一段代码然后直接运行;也可能是面向应用的偏传统的Serverless,我有一个业务,我不想把它变成函数,我还是喜欢用原来的方式去运行,包括现在面向应用的Serverless应用引擎,面向容器编排的Serverless Kubernetes,面向容器的ECI,这一系列在Serverless这个概念下都是Serverless体系的一部分。

 云原生开源技术

除了前面提到的像容器、微服务、Serverless技术之外,实际上云原生这块技术是非常广泛的。阿里云除了提供云计算之外,在开源的技术领域也有非常多的贡献。这里面列出了很多阿里云贡献或参与云原生方面的开源技术,既包括我们比较熟悉的微服务像Dubbo、Spring Cloud Alibaba等是阿里云贡献的,也有像容器的边缘计算等各种各样的开源技术。

云原生产品家族

相应地,在云计算这个市场里面,阿里云在云原生方面有最全的产品家族,既包括前面讲到的容器等,也包括了像云原生的数据库、云原生的大数据、云原生的安全这个一系列的产品,因为只有整个体系进行云原生化,才能帮助用户用云原生的方式更好地上到云端。
各个行业现在都在用云原生的方式上云。过去几年里用云原生上云的第一批用户大概是在2017-2018年,互联网行业是最快使用云原生技术上云的。互联网业务大多都是一些新的业务,而且往往会有高速地迭代,包括像大流量的冲击,所以它是第一波选择用云原生技术上云的,比如头条、抖音、快手等。
近两年偏传统行业的企业也开始用云原生技术上云,包括政府、金融、制造、物流等都开始用云原生技术上云。所以在图上既可以看到有比较前沿的互联网行业,也有一些传统的行业。

今天的内容希望能帮助大家去做一个思考,能够让大家去想想自己所在的这个企业或者行业是不是到了云原生上云的阶段,包括用哪种云原生上云的方式适合大家。谢谢!(完)
/ 相关推荐 /↓↓↓


你可能还想看

1. 云上应用系统数据存储架构演进

2. 看不见的“网” ,一文读懂阿里云基础设施网络

3. 对话阿里云张献涛:距离云计算终极目标还有多远?

4. 重点项目却总是腐化,程序员为什么会写烂代码?

5. 钉钉总裁不穷:周末最烦写周报还有被人钉

END

如果喜欢我们的文章请点击「在看」

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存